
//695.岛屿的最大面积
class Solution {
public:
    int maxAreaOfIsland(vector<vector<int>>& grid) {
        int n=grid.size(),m=grid[0].size();
        int dx[]={-1,1,0,0};
        int dy[]={0,0,1,-1};

        function<int(int,int)> dfs=[&](int x,int y)
        {
            int ret=1;
            grid[x][y]=0;
            for(int k=0;k<4;k++)
            {
                int a=x+dx[k];
                int b=y+dy[k];
                if(a>=0&&a<n&&b>=0&&b<m&&grid[a][b]==1) ret+=dfs(a,b);  //向周围统计岛屿的面积
            }                
            return ret;
        };
        int ans=0;

        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(grid[i][j]==1) 
                    ans=max(ans,dfs(i,j));  //找出最大岛屿
            }
        }
        return ans;
    }
};